/*
 * @Descripttion: 主要用来操作数据库
 * @version: 
 * @Author: 一氧化二氢
 * @Date: 2022-01-01 11:29:57
 * @lastEditorTime: Do no edit
 */

const User = require('../model/user.model')
class UserService {
    
    /**
     * @name: 
     * @test: test font
     * @msg: 在数据库创建用户
     * @return {*}
     * @param {*} user_name
     * @param {*} password
     */
    async createUser(user_name, password) {
        //插入数据
        //await表达式：promise对象的值
        const res = await User.create({ user_name, password })//表的字段和值,es6简写
        return res.dataValues  //res会作为promise返回
    }
    /**
     * @name: 
     * @test: test font
     * @msg: 查询数据库获取用户信息
     * @return {*}
     * @param {*} id
     * @param {*} user_name
     * @param {*} password
     * @param {*} is_admin
     */    
    async getUserInfo({ id, user_name, password, is_admin }) {
        const whereOpt = {} //查询对象
        //如果数据存在时则拷贝其到查询对象中
        id && Object.assign(whereOpt, { id })
        user_name && Object.assign(whereOpt, { user_name })
        password && Object.assign(whereOpt, { password })
        is_admin && Object.assign(whereOpt, { is_admin })
        const res = await User.findOne({
            attributes: ['id', 'user_name', 'password', 'is_admin'],
            where: whereOpt
        })
        return res ? res.dataValues : null
    }

    async updateById({id,user_name,password,is_admin}) {
        const whereOpt = {id}
        const newUser = {}
        user_name && Object.assign(newUser,{user_name})
        password&& Object.assign(newUser,{password})
        is_admin && Object.assign(newUser,{is_admin})

        const res= await User.update(newUser,{where:whereOpt})
        console.log(res)
        //如果更新成功会返回[1],否则返回0
        return res[0]>0?true:false

    }
}

module.exports = new UserService()